規格驅動開發實際上要怎麼做?Spec Kit 給了一套完整的流程與十個 Agentic Commands——今天先介紹 Spec Kit 到底是什麼。
昨天處理完模型與 effort,Claude Code 這邊的設定大致就位了。
工具準備好,但我們還是不知道要怎麼告訴 AI 做出一個系統。
直接丟一句「幫我做登入」給 Claude,它能夠自己寫出一個完整的功能,但過程中它替你決定了幾十件事:session 多久過期、鎖定算帳號還是算 IP、密碼怎麼雜湊,而這些決定沒有被記在任何地方,最後回頭看,只剩下程式碼,看不到當初為什麼這樣選。
我想要的是一條固定的流程:先把「要做什麼」講清楚、確認過,再讓它動手。問題是每一步該問它什麼、產出該長什麼樣,每次都得重新想一遍,因此有了Spec Kit。
GitHub 開源的 Spec-Driven Development 工具包(github/spec-kit),Spec Kit 的核心價值是把 SDD 流程、Prompt/Skill、Templates、Scripts 和 Workflow 組織起來,讓 AI Coding Agent 按照一套可重複的流程工作。
它把開發重心從「直接讓 AI 寫程式」,往「先建立規格、再規劃、拆任務,最後實作」移動。這也是我這個系列前面一直在談的 AI-Native Development:問題不是 AI 能不能寫,而是我們能不能讓 AI 在一套可追蹤、可驗證的開發流程裡工作。
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git@vX.Y.Z
vX.Y.Z 要換成最新的 release tag,前面的 v 要留著:
(Invoke-RestMethod https://api.github.com/repos/github/spec-kit/releases/latest).tag_name
我實測的是 v1.0.4。初始化:
specify init <專案名> --integration claude
| 路徑 | 用途 |
|---|---|
.claude/skills/speckit-*/SKILL.md |
十份做法說明書,給 Claude 讀的 |
.specify/templates/ |
產出文件的形狀(spec / plan / tasks / checklist / constitution 各一份骨架) |
.specify/scripts/powershell/ |
管路:開分支、算路徑、找檔案 |
/speckit.constitution |
建立憲法,建立專案的最高治理原則與核心價值 |
.specify/workflows/ |
把四個主線指令串成一條龍,中間插審核關卡 |
初始化時會建立一套標準的目錄與模板;實際內容則會依使用的 Agent、版本、preset、extension 與專案需求而不同。
我先把十個指令分成兩組,主線四個指令:
| 指令 | 做什麼 | 產出 |
|---|---|---|
/speckit-constitution |
訂專案的開發原則 | constitution.md |
/speckit-specify |
從一句話長出需求與 User Story(what 和 why) | spec.md |
/speckit-plan |
產出技術實作計畫,含技術棧與資料模型 | plan.md 等 |
/speckit-tasks |
把計畫拆成有相依順序的任務清單 | tasks.md |
支線六個指令:
| 指令 | 做什麼 |
|---|---|
/speckit-implement |
照著 tasks.md 真的把程式寫出來 |
/speckit-clarify |
找出規格裡講不清楚的地方,這次實測最多問五個問題 |
/speckit-analyze |
交叉比對 spec / plan / tasks 有沒有互相矛盾(唯讀,不改檔) |
/speckit-checklist |
針對這個功能產一份自訂檢查清單 |
/speckit-taskstoissues |
把任務轉成 GitHub issue |
/speckit-converge |
拿現有程式碼對照規格,把還沒做的補成新任務 |
最後一個值得留意——它處理的是規格與程式碼已經對不上的情況,也就是大部分真實專案的狀態。
/speckit-constitution 產出 .specify/memory/constitution.md,是後續流程評估與產出的治理原則,相關 Skill 會把它納入後續工作。
## Core Principles
### I. API 欄位一律 snake_case
### II. 時間一律 UTC + ISO 8601
### III. 自建認證(NON-NEGOTIABLE)
### IV. 資料庫寫入必須有測試(NON-NEGOTIABLE)
### V. 資料存取只走 ORM
這幾條是我刻意挑選的「高辨識度規則」:如果 Claude 真的有把 constitution 納入後續推理,這些規則應該會出現在後面的 spec、plan 或技術選擇裡。
憲法寫好後,我丟給 Spec Kit 的需求其實非常短:
使用者用 email 與密碼登入,登入成功後取得一組 session,可以登出。
密碼連續輸入錯誤三次要鎖定帳號十五分鐘。
Spec Kit 沒有直接叫 Claude 開始寫 Code,它先把這句話轉成一組可以逐份 Review 的文件。這次實測產出的文件如下:
spec.md 201 行 User Story、功能需求、驗收條件、Assumptions
plan.md 254 行 技術棧、分層、實作順序
research.md 295 行 技術選型的比較與理由
data-model.md 168 行 表、欄位、關聯
contracts/openapi.yaml 149 行 API 契約
quickstart.md 206 行 怎麼把它跑起來
checklists/requirements.md 70 行 規格自檢清單
1343 行
它不是把:一句話 → Code,而是把:一句話 → 一組可以被人閱讀、討論、修改、追蹤的開發決策。
一、流程被固定下來
不用每次自己想「這一步該問它什麼」。核心指令提供了一條可以重複執行的開發路徑,而 clarify、checklist、analyze 等指令可以插在適當的位置作為品質檢查。
二、每一步的產出都是檔案
可以 review、可以進 git、可以 diff。
三、步驟之間有審核關卡。.specify/workflows/speckit/workflow.yml 把四個主線指令串起來,且中間插了 gate:
- id: review-spec
type: gate
message: "Review the generated spec before planning."
options: [approve, reject]
on_reject: abort
規格沒過就不會進到 plan。
四、憲法是跨步驟的約束。
它不是某一次對話裡的提示詞,是每個階段產出前都會被讀一次的檔案。
.claude/skills/ 底下的十個 skill——跟之後要自己寫的 skill 是同一個機制,沒有自己的執行引擎。明天:憲法寫好了,探針也埋好了。接下來讓 Claude 從一句話長出一份完整規格。